﻿namespace MetaProperties.Framework
{
    using System.Collections.Generic;
    using System.ComponentModel;

    /// <summary>
    /// Defines a container of MetaProperties.
    /// </summary>
    public interface IMetaPropertyHost : INotifyPropertyChanged
    {
        /// <summary>
        /// Gets all the public MetaProperties in the container.
        /// </summary>
        /// <value>The stream of public MetaProperties.</value>
        IEnumerable<IMetaProperty> MetaProperties { get; }
        
        /// <summary>
        /// Gets the requested MetaProperty.
        /// </summary>
        /// <param name="propertyName">The name of the property.</param>
        /// <returns>The requested MetaProperty if it exists; null otherwise.</returns>
        IMetaProperty GetMetaProperty(string propertyName);
    }
}
